package com.rpay.service.userWallet.impl;

import com.rpay.common.dto.userWallet.UserWalletDTO;
import com.rpay.common.dto.userWallet.UserWalletQueryDTO;
import com.rpay.dao.userWallet.UserWalletDao;
import com.rpay.model.user.UserRippleDO;
import com.rpay.model.userWallet.UserWalletDO;
import com.rpay.model.userWallet.UserWalletQueryDO;
import com.rpay.service.userWallet.IUserWalletService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class UserWalletServiceImpl implements IUserWalletService {
    @Autowired
    private UserWalletDao userWalletDao;

    @Override
    public UserWalletQueryDTO list(UserWalletQueryDTO userWalletQueryDTO) {
        UserWalletQueryDO userWalletQueryDO = new UserWalletQueryDO();
        userWalletQueryDO.setUserId(userWalletQueryDTO.getUserId());

        List<UserWalletDO> userWalletDOList = userWalletDao.list(userWalletQueryDO);

        List<UserWalletDTO> list = new ArrayList<>();
        if (userWalletDOList != null && userWalletDOList.size() > 0) {
            for (UserWalletDO userWalletDO : userWalletDOList) {
                UserWalletDTO userWalletDTO = convertDOToDTO(userWalletDO);
                list.add(userWalletDTO);
            }
        }
        UserWalletQueryDTO data = convertSqlDOToDTO(list);
        return data;
    }

    @Override
    public boolean post(UserWalletDTO userWalletDTO) {
        UserWalletDO userWalletDO = convertDTOToDO(userWalletDTO);
        userWalletDao.post(userWalletDO);
        return true;
    }

    @Override
    public boolean delete(UserWalletDTO userWalletDTO) {
        UserWalletDO userWalletDO = convertDTOToDO(userWalletDTO);
        userWalletDao.delete(userWalletDO);
        return true;
    }

    @Override
    public boolean patch(UserWalletDTO userWalletDTO) {
        UserWalletDO userWalletDO = convertDTOToDO(userWalletDTO);
        userWalletDao.patch(userWalletDO);
        return true;
    }

    @Override
    public UserWalletDTO findById(int userWalletId) {
        UserWalletDO userWalletDO = userWalletDao.findById(userWalletId);
        return convertDOToDTO(userWalletDO);

    }

    private UserWalletDO convertDTOToDO(UserWalletDTO userWalletDTO) {
        UserWalletDO userWalletDO = null;
        if (userWalletDTO != null) {
            userWalletDO = new UserWalletDO();
            userWalletDO.setId(userWalletDTO.getId());
            userWalletDO.setUserId(userWalletDTO.getUserId());
            userWalletDO.setWalletAddr(userWalletDTO.getWalletAddr());
            userWalletDO.setWalletTag(userWalletDTO.getWalletTag());
            userWalletDO.setRemark(userWalletDTO.getRemark());
        }
        return userWalletDO;
    }

    private UserWalletDTO convertDOToDTO(UserWalletDO userWalletDO) {
        UserWalletDTO userWalletDTO = null;
        if (userWalletDO != null) {
            userWalletDTO = new UserWalletDTO();
            userWalletDTO.setId(userWalletDO.getId());
            userWalletDTO.setUserId(userWalletDO.getUserId());
            userWalletDTO.setWalletAddr(userWalletDO.getWalletAddr());
            userWalletDTO.setWalletTag(userWalletDO.getWalletTag());
            userWalletDTO.setRemark(userWalletDO.getRemark());
            userWalletDTO.setCreateTime(userWalletDO.getCreateTime());
            userWalletDTO.setUpdateTime(userWalletDO.getUpdateTime());
        }
        return userWalletDTO;
    }

    private UserWalletQueryDTO convertSqlDOToDTO(List list) {
        UserWalletQueryDTO userWalletQueryDTO = null;
        userWalletQueryDTO = new UserWalletQueryDTO();
        userWalletQueryDTO.setList(list);
        return userWalletQueryDTO;
    }
}
